package com.sz.common.core.service.role;

import com.sz.common.core.system.entity.Role;

import java.util.List;

/**
 * Function: 为实体对象实现角色关系，必须实现以下方法.<br>
 * 放在这里的原因是，base包独立之后，供应商系统，客户系统引用角色时接口可以继承
 * Author: wentao.chang <br>
 * Date: 2017-01-09 17:03:00
 */
public interface IRoleMemberService {

    /**
     * 获取成员类型名称
     *
     * @return
     */
    String getMembershipTypeName();

    /**
     * 判断是否是可接受的成员类型
     *
     * @param membership
     * @return
     */
    boolean isMembershipAcceptable(RoleMembership membership);

    /**
     * 给指定的角色全量分配成员，必须删除之前关系表中的关系
     */
    void assignRoleMembers(int roleId, List<RoleMembership> members);

    /**
     * 删除角色分配的成员
     */
    void removeRoleMembers(int roleId, List<RoleMembership> members);

    /**
     * 根据成员获取角色集合
     *
     * @param member
     * @return
     */
    List<Role> getRolesByMember(RoleMembership member);

}
